import Vue from 'vue'
import Vuex from 'vuex'

Vue.use(Vuex)
const store = new Vuex.Store({
	
	// state:{},
	// mutations:{},
	// actions:{},
	 state:{
	        //存放的键值对就是所要管理的状态
			// 存储token
	      token: localStorage.getItem('token')?localStorage.getItem('token'):null,
		  userInfo: localStorage.getItem('userInfo')?localStorage.getItem('userInfo'):null,
		  op:10,
		  addressId:localStorage.getItem('addressid'),// addressId：收货地址id
	    },
		// 只有mutations 中定义的函数，才有权利修改state 中的数据
		 mutations:{
			 // 不能在中 mutations 执行异步操作
		        //es6语法，等同edit:funcion(){...}
				// 修改token，并将token存入localStorage
		       setToken: (state, token) => {
				    state.token = token   //存token
		       },
			   setUserInfo: (state, userInfo) => {
				   state.userInfo = userInfo   //存userInfo
				   },
				   newaddress(state,a){
				   		 state.addressid = a
				   		 console.log(state.addressid)
				   },
			   
		    },
			actions:{
				//在actions 中，不能直接修改state 中的数据;
				//必须通过context . commit() 触发某个mutation 才行
				login(context,userInfo){
						console.log(userInfo)
						const { nickName, avatarUrl } = userInfo
						context.commit('setToken',userInfo.token)
						context.commit('setUserInfo',JSON.stringify(userInfo))
					
				},
				logout(context){
					context.commit('setToken',null)
					context.commit('setUserInfo',null)
					},
				
			},
				
			
		
	
})
// const get = new Vuex.Store({ 监听数据变化 
// 	get(state){
// 		if(!state.token){
			//state.token = JSON.parse(localStorage.getItem(token))
// 		}
//    return  state.token   
// 	}
// })
export default store
